Automatically complete a specific software task using hidden tags

ABSTRACT

A method to detect and diagnose where an error occurs in a source code that is associated with a software program or a website is provided. The method may include receiving a log report associated with the software program or the website, whereby by the log report is sent based on a hidden tag associated with the software program or the website. The method may also include analyzing the received log report. The method may further include detecting at least one error based on the analysis of the received log report. The method may include reverting back to a previous line in the source code associated with the software program or the website, whereby the reverting is based on the detection of the at least one error.

BACKGROUND

The present invention relates generally to the field of computers, andmore particularly to software installations.

Software and websites include many different functions and it may not beeasy for a user to follow a guide or manual instructions to use thesoftware. Sometimes, even active users may not know how to use somespecific functions in the software because the user may not know whichsection of the instructions or manual they should be followed first, orwhich section is not necessary and may not even need to be followed.Additionally, a user may need to set up some configuration before usinga particular software or website. However, during the configuration, auser may not be able to complete the installation or configuration ofthe software due to the wrong command or a bad instruction. As such, auser may try to find out the correct steps or commands by searching onthe online help or a manual.

SUMMARY

According to one embodiment, a method to detect and diagnose where anerror occurs in a source code that is associated with a software programor a website is provided. The method may include capturing a pluralityof snapshots associated with a computer system installation environmentduring a plurality of key times. The method may also include receiving alog report associated with the software program or the website, wherebyby the log report is sent based on a hidden tag associated with thesoftware program or the website. The method may also include analyzingthe received log report. The method may further include detecting atleast one error based on the analysis of the received log report. Themethod may include reverting back to a previous line in the source codeassociated with the software program or the website, whereby thereverting is based on the detection of the at least one error.

According to another embodiment, a computer system to detect anddiagnose where an error occurs in a source code that is associated witha software program or a website is provided. The computer system mayinclude one or more processors, one or more computer-readable memories,one or more computer-readable tangible storage devices, and programinstructions stored on at least one of the one or more storage devicesfor execution by at least one of the one or more processors via at leastone of the one or more memories, whereby the computer system is capableof performing a method. The method may include receiving a log reportassociated with the software program or the website, whereby by the logreport is sent based on a hidden tag associated with the softwareprogram or the website. The method may also include analyzing thereceived log report. The method may further include detecting at leastone error based on the analysis of the received log report. The methodmay include reverting back to a previous line in the source codeassociated with the software program or the website, whereby thereverting is based on the detection of the at least one error.

According to yet another embodiment, a computer program product todetect and diagnose where an error occurs in a source code that isassociated with a software program or a website is provided. Thecomputer program product may include one or more computer-readablestorage devices and program instructions stored on at least one of theone or more tangible storage devices, the program instructionsexecutable by a processor. The computer program product may includeprogram instructions to receive a log report associated with thesoftware program or the website, whereby by the log report is sent basedon a hidden tag associated with the software program or the website. Thecomputer program product may also include program instructions toanalyze the received log report. The computer program product mayfurther include program instructions to detect at least one error basedon the analysis of the received log report. The computer program productmay include program instructions to revert back to a previous line inthe source code associated with the software program or the website,whereby the reverting is based on the detection of the at least oneerror.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

These and other objects, features and advantages of the presentinvention will become apparent from the following detailed descriptionof illustrative embodiments thereof, which is to be read in connectionwith the accompanying drawings. The various features of the drawings arenot to scale as the illustrations are for clarity in facilitating oneskilled in the art in understanding the invention in conjunction withthe detailed description. In the drawings:

FIG. 1 illustrates a networked computer environment according to oneembodiment;

FIG. 2 illustrates an exemplary system diagram according to oneembodiment;

FIG. 3 illustrates an exemplary illustration of a log server accordingto one embodiment;

FIG. 4 is an operational flowchart illustrating the steps carried out bya program to automatically complete a specific software task usinghidden tags according to one embodiment;

FIG. 5 illustrates an exemplary illustration of pre-defined tags for ascript according to one embodiment;

FIG. 6 is a block diagram of internal and external components ofcomputers and servers depicted in FIG. 1 according to one embodiment;

FIG. 7 is a block diagram of an illustrative cloud computing environmentincluding the computer system depicted in FIG. 1, according to oneembodiment; and

FIG. 8 is a block diagram of functional layers of the illustrative cloudcomputing environment of FIG. 7 according to one embodiment.

DETAILED DESCRIPTION

Detailed embodiments of the claimed structures and methods are disclosedherein; however, it can be understood that the disclosed embodiments aremerely illustrative of the claimed structures and methods that may beembodied in various forms. This invention may, however, be embodied inmany different forms and should not be construed as limited to theexemplary embodiments set forth herein. Rather, these exemplaryembodiments are provided so that this disclosure will be thorough andcomplete and will fully convey the scope of this invention to thoseskilled in the art. In the description, details of well-known featuresand techniques may be omitted to avoid unnecessarily obscuring thepresented embodiments.

Embodiments of the present invention relate generally to the field ofcomputers, and more particularly to software installations. Thefollowing described exemplary embodiments provide a system, method andprogram product to, among other things, automatically complete aspecific software task using hidden tags. Therefore, the presentembodiment has the capacity to improve the technical field of installingand configuring software by using a browser plug-in that will findhidden tags in the current page and then perform the appropriatecorresponding action. More specifically, the present embodiment mayreduce the learning curve for new software, applications, and webpages.Additionally, the present embodiment may provide automated operationswith proper environment parameters as well as interactive informationfor instructing users to the correct steps.

As previously described, a user may need to set up some configurationbefore using a particular software or website and during theconfiguration, the user may not be able to complete the installation orconfiguration of the software due to the wrong command or a badinstruction. As such, a user may try to find out the correct steps orcommands by searching on the online help or a manual. However, it maynot be easy for a user to find out which section or which steps areneeded to be followed during the configuration since it may not be easyfor the user to follow the guides or manuals instructions to use,install, or configure the software. For example, a user may beexperiencing trouble during using, installing, or configuring softwareand may not know what to do since it may be difficult to find where thedocument is to help resolve the problem. Similarly, it may be difficultfor the user to know which step is wrong and where the user shouldstart. Furthermore, it may be difficult for the user to know which stepthe user is currently experiencing difficulty at and where the next stepis. Therefore, users may waste a lot of time while searching for thecorrect answer. As such, it may be advantageous, among other things, toprovide a solution, such as the present embodiment described herein,which may help a user use software or a website in a flexible andinteractive way. Additionally, by using a method, such as the presentembodiment, a user may operate the software or the website with dialoginteractions or automation scripts.

According to at least one implementation, the present embodiment mayprovide a plug-in which is installed in the software or the website andinteracts with invisible html tags in the target's source code. Theplug-in may then be used to verify the environment parameters andexecute the invisible html tags in the target location. Additionally,the operating logs or exception logs may be sent out to a log server toanalyze and parse the plug-in for further execution via the scripts.

Furthermore, the invisible html tags may be implemented by taggingdiverse information, such as scripts, steps, and dialog codes in thetarget source. For example, configuration scripts may be tagged in theonline-help html page. According to the present embodiment, theinvisible scripts in the HTML tags may be marked with a specialcharacter for the plug-in to identify and execute the scripts. As such,based on the interactions between the plug-in and the target sources(i.e., invisible html tags), the present embodiment may provide a moreflexible and interactive way to aid users to use the software or thewebsite properly.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The following described exemplary embodiments provide a system, methodand program product to automatically complete a specific software taskusing hidden tags. According to the present embodiment, the hidden tagsare automatically run for a user to complete the installation orconfiguration task. As such the hidden tags may start anywhere duringthe installation, configuration, and operation process and complete thetask for user.

As previously described, according to at least one implementation, thepresent embodiment may provide a mechanism that is able to detect anddiagnose where an error associated with a software product or a websitetakes place. As such, when a user selects the information center webpage, the present embodiment may execute scripts that are embedded ashidden tags on the web page automatically or provide pop-up windows toconfirm with the user, custom parameters that the user input earlier.

According to the present embodiment, a plug-in may receive the logs froma log diagnosis server. As such, the plug-in may start the actions basedon what is received from an event processor to either rollback to aspecific step and complete the tasks, or trigger hidden scripts from theinvisible tag in the html source file location that was defined in eventprocessor. Additionally, a pop-up dialog may be used by the documentwriter to correct the steps to make it more clear. Furthermore, theplug-in can also directly detect the errors in a system under test (SUT)and help the user rollback to previous step and interact with user tohelp complete the task.

Referring to FIG. 1, an exemplary networked computer environment 100 inaccordance with one embodiment is depicted. The networked computerenvironment 100 may include a computer 102 with a processor 104 and adata storage device 106 that is enabled to run a software program 108and a Hidden Tag Program 116A. The networked computer environment 100may also include a server 114 that is enabled to run a Hidden TagProgram 116B that may interact with a database 112 and a communicationnetwork 110. The networked computer environment 100 may include aplurality of computer 102 and servers 114, only one of which is shown.The communication network may include various types of communicationnetworks, such as a wide area network (WAN), local area network (LAN), atelecommunication network, a wireless network, a public switched networkand/or a satellite network. It should be appreciated that FIG. 1provides only an illustration of one implementation and does not implyany limitations with regard to the environments in which differentembodiments may be implemented. Many modifications to the depictedenvironments may be made based on design and implementationrequirements.

The client computer 102 may communicate with the Hidden Tag Program 116Brunning on server computer 114 via the communications network 110. Thecommunications network 110 may include connections, such as wire,wireless communication links, or fiber optic cables. As will bediscussed with reference to FIG. 6, server computer 114 may includeinternal components 800 a and external components 900 a, respectively,and client computer 102 may include internal components 800 b andexternal components 900 b, respectively. Server computer 114 may alsooperate in a cloud computing service model, such as Software as aService (SaaS), Platform as a Service (PaaS), or Infrastructure as aService (IaaS). Server 114 may also be located in a cloud computingdeployment model, such as a private cloud, community cloud, publiccloud, or hybrid cloud. Client computer 102 may be, for example, amobile device, a telephone, a personal digital assistant, a netbook, alaptop computer, a tablet computer, a desktop computer, or any type ofcomputing devices capable of running a program, accessing a network, andaccessing a database 112. According to various implementations of thepresent embodiment, the Hidden Tag Program 116A, 116B may interact witha database 112 that may be embedded in various storage devices, such as,but not limited to a computer 102, a networked server 114, or a cloudstorage service.

As previously described, the client computer 102 may access the HiddenTag Program 116B, running on server computer 114 via the communicationsnetwork 110. For example, a user using a client computer 102 may accessthe Hidden Tag Program 116A, 116B, running on client computer 102, andserver computer 114, respectively via the communications network 110.For example, a user using client computer 102 may connect via acommunication network 110 to the Hidden Tag Program 116B which may berunning on server computer 114. The user may utilize the Hidden TagProgram 116A, 116B to automatically complete a specific software taskusing hidden tags. The hidden tag method is explained in more detailbelow with respect to FIGS. 2-4.

Referring now to FIG. 2, an exemplary system diagram 200 in accordancewith one embodiment is depicted. As previously described, when a userusing a client computer 102 selects the information center web page, thepresent embodiment may execute scripts that are embedded as hidden tags204 on the web page automatically or provide pop-up windows to confirmwith the user, custom parameters that the user input earlier. Accordingto at least one implementation, the present embodiment includes the useof a log server 114 which may include a log repository 112 thatreceives, saves, and parses logs; records error frequency; andidentifies the client. Then, the log server 114 may pass the parsed logsto a plug-in 206 that reads the logs; rollbacks the steps; executes tagsand scripts; and pump frequent errors to a plug-in 206.

More specifically, the plug-in 206 is a browser-based plug-in. Accordingto the present embodiment, the plug-in 206 may perform 3 main functionsas follows:

1. The log server 114 will send the user's system log parsing result tothe plug-in 206. As such, the plug-in may know which step the user isperforming and which step the system should be rolled back to.

2. The plug-in 206 can recognize the invisible tags hidden in HTMLsource file and execute the script on the target machine 102.

3. The log server 114 will also send information to the plug-in 206regarding the most frequent error procedures that the user is reading.When the plug-in 206 receives the message, it will check the user'spermission and popup a suggested modification dialog.

According to the present embodiment, the log server 114 has a logrepository 112 and it will perform the following 3 tasks:

1. It will receive the target machine's 102 system log and parse itusing existing technology. After parsing the log, it will know themachine's 102 status and which step should it be rolled back to.

2. The log server 114 will also record the error frequency by all themachine's 102 logs. As such, the log server 114 can send suggestions toeligible users.

3. The log server 114 will identify where the plug-in client 206 is foreach target machine so it can send the messages to client.

According to the present embodiment, the system under test (SUT) 202, isa machine that runs the production installation and will perform thefollowing 2 tasks:

1. The SUT 202 will send error logs to log server.

2. The SUT 202 will also send the client internet protocol (IP) which isinstalled for the specific plug-in 206 to the log server 114.

Referring now to FIG. 3, an exemplary illustration 300 of a log serverin accordance with one embodiment is depicted. The present embodimentmay include the use of a log diagnosis server 114 which may include alog repository 112 that saves and sends logs to a log engine 304. Thelog engine 304 may discover errors in logs and track (i.e., record) theerror counts. Then, the log engine 304 will send the result to an eventprocessor 302. Then, based the errors in the logs and error counts, theevent processor 302 may trigger (i.e., generate) certain actions thatare passed to a plug-in 206. Such triggered actions may include rollingback the script to the last successful step when the error happened inthe user's environment (which is found by the log engine 304); target asection of the information center (i.e., online help); recommendmodification of the information center (i.e., modify content of theon-line help); or trigger hidden scripts. Additionally, the eventprocessor 302 may keep the user's input in case the rollback scriptneeds the user's input to get back to the more clean state of the systemand help the user complete the starting steps automatically.Furthermore, the event processor 302 may target the section of theinformation center or online help that has the history of the mosterrors.

Referring now to FIG. 4, an operational flowchart 400 illustrating thesteps carried out by a program to automatically complete a specificsoftware task using hidden tags 204 (FIG. 2) in accordance with oneembodiment is depicted. As previously described, the Hidden Tag Program116A, 116B (FIG. 1) may provide a plug-in 206 (FIG. 2) which isinstalled in the software or the website and interacts with invisiblehtml tags 204 (FIG. 2) in the target's source code. As such, in the pagesource code, there will be hidden tags 204 (FIG. 2) inside the HTMLcomment tags. According to at least one implementation, the hidden tags204 (FIG. 2) are executable commands for the plug-in 206 (FIG. 2). Theplug-in 206 (FIG. 2) may then be used to verify the environmentparameters and execute the invisible html tags 204 (FIG. 2) in thetarget location. Additionally, the operating logs or exception logs maybe sent out to a log server 114 (FIG. 2) to analyze and parse theplug-in 206 (FIG. 2) for further execution via the scripts.Additionally, the invisible html tags 204 (FIG. 2) may be implemented bytagging diverse information, such as scripts, steps, and dialog codes inthe target source. According to the present embodiment, the invisiblescripts 204 (FIG. 2) in the HTML tags may be marked with a specialcharacter for the plug-in 206 (FIG. 2) to identify and execute thescripts providing a more flexible and interactive way to aid users touse the software or the website properly.

Therefore, with respect to FIG. 4 at 402, the log server 114 (FIG. 2)will obtain the log from the user. As previously explained, the logserver 114 (FIG. 2) has a log repository 112 (FIG. 2) and it willreceive the target machine's 102 (FIG. 2) system log and parse it.

Then at 404, the log is analyzed and errors are detected by line.According to at least one implementation, after parsing the log, the logserver 114 (FIG. 2) will know the machine's 102 (FIG. 2) status andwhich step should it be rolled back to.

Therefore at 406, it is determined whether an error is found in a line.If an error is not discovered in a line at 406, then the method maycontinue back to step 404 to continue to analyze the log and detecterrors by line.

However, if an error is discovered in a line at 406, then the methodcontinues to step 408 to fall back to the previous line. As such, whenan error is detected, the log server 114 (FIG. 2) will send the user'ssystem log parsing result to the plug-in 206 (FIG. 2). As such, theplug-in may know which step the user is performing and which step thesystem should be rolled back to. As previously described, the plug-in206 (FIG. 2) can recognize the invisible tags hidden in HTML source fileand execute the script on the target machine 102 (FIG. 2).

Referring now to FIG. 5, an exemplary illustration 500 of pre-definedtags for a script in accordance with one embodiment is depicted.According to the present embodiment, hidden tags 502 will be inside theHTML comment contents 504 (e.g., <!-&->). Additionally, there will be astarting hint 506 to let the plug-in 206 (FIG. 2) know that this iswhere the starting of the script is (e.g., the ‘@’ sign). Furthermore,the <popup> tag 508 will pop up a dialog (e.g., a dialog box via agraphical user interface (GUI)) to wait for the user's input. Also,according to one implementation, the variable 510 may start with a ‘$’,and the plug-in 206 (FIG. 2) will replace the actual value into itduring execution.

It may be appreciated that FIGS. 2-5 provide only an illustration of oneimplementation and do not imply any limitations with regard to howdifferent embodiments may be implemented. Many modifications to thedepicted environments may be made based on design and implementationrequirements. For example, as previously described, the log server 114(FIG. 2) will also send information to the plug-in 206 (FIG. 2)regarding the most frequent error procedures that the user is reading.When the plug-in 206 (FIG. 2) receives the message, it will check theuser's permission and popup a suggested modification dialog.Additionally, the log server 114 (FIG. 2) will also record the errorfrequency by all the machine's 102 (FIG. 2) logs. As such, the logserver 114 (FIG. 2) can send suggestions to eligible users. Furthermore,the log server 114 (FIG. 2) will identify where the plug-in client 206(FIG. 2) is for each target machine so it can send the messages toclient.

The following are two sample scenarios that the present embodiment maybe applied to:

Scenario 1: Help Users to complete software installation if usersencounter any errors during installation:

1. User starts software installation and hits an error duringinstallation.

2. Exception logs will be sent out to the log server 114 (FIG. 2) andparsed and sent to the plug-in 206 (FIG. 2).

3. The plug-in 206 (FIG. 2) will verify the environment parameters andcollect what steps the user has performed.

4. The plug-in 206 (FIG. 2) will then execute the invisible html tags204 (FIG. 2) in the software's information center.

5. The plug-in 206 (FIG. 2) will determine the next steps based on thecontents in the invisible tags 204 (FIG. 2). For example, the plug-in206 (FIG. 2) will pop up a dialog and ask user to input the environmentinformation and continue to finish the installation for user.

Scenario 2: Help document writers identify which part of theinstallation guide of the information center that a user encounterserrors the most often.

1. The invisible tag 204 (FIG. 2) on the information center HTMLcollects which steps that users encountered problems in the most.

2. The plug-in 206 (FIG. 2) reads this information and pops up a dialogto the document writer with the script which is in the invisible tag 204(FIG. 2) or from server alternatively.

3. The document writer correct the steps to make it more clear.

FIG. 6 is a block diagram 600 of internal and external components ofcomputers depicted in FIG. 1 in accordance with an illustrativeembodiment of the present invention. It should be appreciated that FIG.6 provides only an illustration of one implementation and does not implyany limitations with regard to the environments in which differentembodiments may be implemented. Many modifications to the depictedenvironments may be made based on design and implementationrequirements.

Data processing system 800, 900 is representative of any electronicdevice capable of executing machine-readable program instructions. Dataprocessing system 800, 900 may be representative of a smart phone, acomputer system, PDA, or other electronic devices. Examples of computingsystems, environments, and/or configurations that may be represented bydata processing system 800, 900 include, but are not limited to,personal computer systems, server computer systems, thin clients, thickclients, hand-held or laptop devices, multiprocessor systems,microprocessor-based systems, network PCs, minicomputer systems, anddistributed cloud computing environments that include any of the abovesystems or devices.

User client computer 102 (FIG. 1) and network server 114 (FIG. 1) mayinclude respective sets of internal components 800 a,b and externalcomponents 900 a,b illustrated in FIG. 6. Each of the sets of internalcomponents 800 include one or more processors 820, one or morecomputer-readable RAMs 822 and one or more computer-readable ROMs 824 onone or more buses 826, and one or more operating systems 828 and one ormore computer-readable tangible storage devices 830. The one or moreoperating systems 828 and the Software Program 108 (FIG. 1) and theHidden Tag Program 116A (FIG. 1) in client computer 102 (FIG. 1) and theHidden Tag Program 116B (FIG. 1) in network server 114 (FIG. 1) arestored on one or more of the respective computer-readable tangiblestorage devices 830 for execution by one or more of the respectiveprocessors 820 via one or more of the respective RAMs 822 (whichtypically include cache memory). In the embodiment illustrated in FIG.6, each of the computer-readable tangible storage devices 830 is amagnetic disk storage device of an internal hard drive. Alternatively,each of the computer-readable tangible storage devices 830 is asemiconductor storage device such as ROM 824, EPROM, flash memory or anyother computer-readable tangible storage device that can store acomputer program and digital information.

Each set of internal components 800 a,b also includes a R/W drive orinterface 832 to read from and write to one or more portablecomputer-readable tangible storage devices 936 such as a CD-ROM, DVD,memory stick, magnetic tape, magnetic disk, optical disk orsemiconductor storage device. A software program, such as the SoftwareProgram 108 (FIG. 1) and the Hidden Tag Program 116A, 116B (FIG. 1) canbe stored on one or more of the respective portable computer-readabletangible storage devices 936, read via the respective R/W drive orinterface 832 and loaded into the respective hard drive 830.

Each set of internal components 800 a,b also includes network adaptersor interfaces 836 such as a TCP/IP adapter cards, wireless Wi-Fiinterface cards, or 3G or 4G wireless interface cards or other wired orwireless communication links. The Software Program 108 (FIG. 1) and theHidden Tag Program 116A (FIG. 1) in client computer 102 (FIG. 1) and theHidden Tag Program 116B (FIG. 1) in network server 114 (FIG. 1) can bedownloaded to client computer 102 (FIG. 1) and network server 114(FIG. 1) from an external computer via a network (for example, theInternet, a local area network or other, wide area network) andrespective network adapters or interfaces 836. From the network adaptersor interfaces 836, the Software Program 108 (FIG. 1) and the Hidden TagProgram 116A (FIG. 1) in client computer 102 (FIG. 1) and the Hidden TagProgram 116B (FIG. 1) in network server 114 (FIG. 1) are loaded into therespective hard drive 830. The network may comprise copper wires,optical fibers, wireless transmission, routers, firewalls, switches,gateway computers and/or edge servers.

Each of the sets of external components 900 a,b can include a computerdisplay monitor 920, a keyboard 930, and a computer mouse 934. Externalcomponents 900 a,b can also include touch screens, virtual keyboards,touch pads, pointing devices, and other human interface devices. Each ofthe sets of internal components 800 a,b also includes device drivers 840to interface to computer display monitor 920, keyboard 930 and computermouse 934. The device drivers 840, R/W drive or interface 832 andnetwork adapter or interface 836 comprise hardware and software (storedin storage device 830 and/or ROM 824).

It is understood in advance that although this disclosure includes adetailed description on cloud computing, implementation of the teachingsrecited herein are not limited to a cloud computing environment. Rather,embodiments of the present invention are capable of being implemented inconjunction with any other type of computing environment now known orlater developed.

Cloud computing is a model of service delivery for enabling convenient,on-demand network access to a shared pool of configurable computingresources (e.g. networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. This cloud model may includeat least five characteristics, at least three service models, and atleast four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forload-balancing between clouds).

A cloud computing environment is service oriented with a focus onstatelessness, low coupling, modularity, and semantic interoperability.At the heart of cloud computing is an infrastructure comprising anetwork of interconnected nodes.

Referring now to FIG. 7, illustrative cloud computing environment 700 isdepicted. As shown, cloud computing environment 700 comprises one ormore cloud computing nodes 100 with which local computing devices usedby cloud consumers, such as, for example, personal digital assistant(PDA) or cellular telephone 700A, desktop computer 700B, laptop computer700C, and/or automobile computer system 700N may communicate. Nodes 100may communicate with one another. They may be grouped (not shown)physically or virtually, in one or more networks, such as Private,Community, Public, or Hybrid clouds as described hereinabove, or acombination thereof. This allows cloud computing environment 700 tooffer infrastructure, platforms and/or software as services for which acloud consumer does not need to maintain resources on a local computingdevice. It is understood that the types of computing devices 700A-Nshown in FIG. 7 are intended to be illustrative only and that computingnodes 100 and cloud computing environment 700 can communicate with anytype of computerized device over any type of network and/or networkaddressable connection (e.g., using a web browser).

Referring now to FIG. 8, a set of functional abstraction layers 8000provided by cloud computing environment 700 (FIG. 7) is shown. It shouldbe understood in advance that the components, layers, and functionsshown in FIG. 8 are intended to be illustrative only and embodiments ofthe invention are not limited thereto. As depicted, the following layersand corresponding functions are provided:

Hardware and software layer 8010 includes hardware and softwarecomponents. Examples of hardware components include: mainframes; RISC(Reduced Instruction Set Computer) architecture based servers; storagedevices; networks and networking components. In some embodiments,software components include network application server software.

Virtualization layer 8012 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers;virtual storage; virtual networks, including virtual private networks;virtual applications and operating systems; and virtual clients.

In one example, management layer 8014 may provide the functionsdescribed below. Resource provisioning provides dynamic procurement ofcomputing resources and other resources that are utilized to performtasks within the cloud computing environment. Metering and Pricingprovide cost tracking as resources are utilized within the cloudcomputing environment, and billing or invoicing for consumption of theseresources. In one example, these resources may comprise applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal provides access to the cloud computing environment forconsumers and system administrators. Service level management providescloud computing resource allocation and management such that requiredservice levels are met. Service Level Agreement (SLA) planning andfulfillment provide pre-arrangement for, and procurement of, cloudcomputing resources for which a future requirement is anticipated inaccordance with an SLA. A Hidden Tag Program may automatically completea specific software task using hidden tags.

Workloads layer 8016 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation; software development and lifecycle management; virtualclassroom education delivery; data analytics processing; and transactionprocessing.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method to detect and diagnose where an erroroccurs in a source code that is associated with a software program or awebsite, the method comprising: receiving a log report associated withthe software program or the website, wherein by the log report is sentbased on a hidden tag associated with the software program or thewebsite; analyzing the received log report; detecting at least one errorbased on the analysis of the received log report; executing a lastsuccessfully executed line in the source code associated with thesoftware program or the website, wherein the executing of the lastsuccessfully executed line in the source code is based on the detectionof the at least one error; and executing a plurality of hidden scriptsassociated with the hidden tag associated with the software program orthe website, wherein the executed plurality of hidden scripts includesaccessing an online help repository by automatically targeting a sectionof the accessed online help repository that has a history of a greatestnumber of errors and displaying, via a graphical user interface, asuggested modification dialog.
 2. The method of claim 1, wherein thehidden tag is embedded in the source code associated with the softwareprogram or the website.
 3. The method of claim 2, wherein the embeddedhidden tag is an executable script.
 4. The method of claim 1, furthercomprising: receiving a plurality of custom parameters from a user usingthe software program or the website, wherein the plurality of customerparameters are based on parameters that were input by the user prior tothe detection of the at least one error; and determining a plurality ofnext steps associated with the software program or the website based ona plurality of content in the embedded hidden tag and the receivedplurality of custom parameters.
 5. The method of claim 1, whereinexecuting the last successfully executed line in the source codecomprises rolling back a script associated with the source code to alast successful step prior to the detection of the at least one error.6. The method of claim 1, further comprising: targeting a section of aninformation center or an online help guide associated with the softwareor the website, wherein the targeted section comprises the section ofthe information center or the online help guide that has a greatesthistory of errors.
 7. The method of claim 1, further comprising:verifying a plurality of environment parameters associated with thesoftware program or the website; and collecting a plurality of steps auser performed prior to the detection of the at least one error.
 8. Acomputer system to detect and diagnose where an error occurs in a sourcecode that is associated with a software program or a website, thecomputer system comprising: one or more processors, one or morecomputer-readable memories, one or more computer-readable tangiblestorage devices, and program instructions stored on at least one of theone or more storage devices for execution by at least one of the one ormore processors via at least one of the one or more memories, whereinthe computer system is capable of performing a method comprising:receiving a log report associated with the software program or thewebsite, wherein by the log report is sent based on a hidden tagassociated with the software program or the website; analyzing thereceived log report; detecting at least one error based on the analysisof the received log report; executing a last successfully executed linein the source code associated with the software program or the website,wherein the executing of the last successfully executed line in thesource code is based on the detection of the at least one error; andexecuting a plurality of hidden scripts associated with the hidden tagassociated with the software program or the website, wherein theexecuted plurality of hidden scripts includes accessing an online helprepository by automatically targeting a section of the accessed onlinehelp repository that has a history of a greatest number of errors anddisplaying, via a graphical user interface, a suggested modificationdialog.
 9. The computer system of claim 8, wherein the hidden tag isembedded in the source code associated with the software program or thewebsite.
 10. The computer system of claim 9, wherein the embedded hiddentag is an executable script.
 11. The computer system of claim 8, furthercomprising: receiving a plurality of custom parameters from a user usingthe software program or the website, wherein the plurality of customerparameters are based on parameters that were input by the user prior tothe detection of the at least one error; and determining a plurality ofnext steps associated with the software program or the website based ona plurality of content in the embedded hidden tag and the receivedplurality of custom parameters.
 12. The computer system of claim 8,wherein executing the last successfully executed line in the source codecomprises rolling back a script associated with the source code to alast successful step prior to the detection of the at least one error.13. The computer system of claim 8, further comprising: targeting asection of an information center or an online help guide associated withthe software or the website, wherein the targeted section comprises thesection of the information center or the online help guide that has agreatest history of errors.
 14. The computer system of claim 8, furthercomprising: verifying a plurality of environment parameters associatedwith the software program or the website; and collecting a plurality ofsteps a user performed prior to the detection of the at least one error.15. A computer program product to detect and diagnose where an erroroccurs in a source code that is associated with a software program or awebsite, the computer program product comprising: one or morecomputer-readable storage devices and program instructions stored on atleast one of the one or more tangible storage devices, the programinstructions executable by a processor, the program instructionscomprising: program instructions to receive a log report associated withthe software program or the website, wherein by the log report is sentbased on a hidden tag associated with the software program or thewebsite; program instructions to analyze the received log report;program instructions to detect at least one error based on the analysisof the received log report; program instructions to execute a lastsuccessfully executed line in the source code associated with thesoftware program or the website, wherein the executing of the lastsuccessfully executed line in the source code is based on the detectionof the at least one error; and program instructions to execute aplurality of hidden scripts associated with the hidden tag associatedwith the software program or the website, wherein the executed pluralityof hidden scripts includes accessing an online help repository byautomatically targeting a section of the accessed online help repositorythat has a history of a greatest number of errors and displaying, via agraphical user interface, a suggested modification dialog.
 16. Thecomputer program product of claim 15, wherein the hidden tag is embeddedin the source code associated with the software program or the website.17. The computer program product of claim 16, wherein the embeddedhidden tag is an executable script.
 18. The computer program product ofclaim 15, further comprising: receiving a plurality of custom parametersfrom a user using the software program or the website, wherein theplurality of customer parameters are based on parameters that were inputby the user prior to the detection of the at least one error; anddetermining a plurality of next steps associated with the softwareprogram or the website based on a plurality of content in the embeddedhidden tag and the received plurality of custom parameters.
 19. Thecomputer program product of claim 15, wherein executing the lastsuccessfully executed line in the source code comprises rolling back ascript associated with the source code to a last successful step priorto the detection of the at least one error.
 20. The computer programproduct of claim 15, further comprising: targeting a section of aninformation center or an online help guide associated with the softwareor the website, wherein the targeted section comprises the section ofthe information center or the online help guide that has a greatesthistory of errors.